home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 3100 / 3100.xpi / chrome / content / js / clickclean.js next >
Text File  |  2010-01-23  |  7KB  |  257 lines

  1. // Click&Clean, MIT, <http://www.hotcleaner.com/>. Copyright Mixesoft(c)Project 2004-2010 <http://www.mixesoft.com/>
  2.  
  3. addEventListener('unload', function() {
  4.     clickClean(1); 
  5. }, false);
  6.  
  7.  
  8.  
  9.  
  10. function clickClean(bClose, ui) {
  11.   
  12.   if (ui) {
  13.     clearUI(ui-1);
  14.     return;
  15.   }
  16.   
  17.   var sanitize = true,
  18.   close = false,
  19.   showPrompt = true,
  20.   wait = 8,
  21.   useExt = false,
  22.   closeExt = false,
  23.   path = '', 
  24.   arg = '', 
  25.   tabs = false, 
  26.   tab = false,
  27.   lso = false,
  28.   file,
  29.   proc;
  30.   
  31.   readPrefs();
  32.   
  33.   if(useExt || closeExt) {
  34.     file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
  35.     proc = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
  36.   }
  37.       
  38.   if (bClose) {
  39.     if (findWindow("navigator:browser"))
  40.       return;
  41.      
  42.     tabs = useExt = sanitize = false;
  43.   }
  44.   else
  45.     close = closeExt = false;
  46.     
  47.   if (tabs)
  48.     clearUI(tab);
  49.   
  50.   if (lso)
  51.     clearLSO();
  52.     
  53.   if (sanitize || close)
  54.     clearBrowsingData();
  55.   else if (useExt || closeExt)
  56.     runExt();
  57.   else
  58.     return;  
  59.   
  60.   function clearLSO() {
  61.     
  62.     var OS = Components.classes["@mozilla.org/xre/app-info;1"]
  63.       .getService(Components.interfaces.nsIXULRuntime).OS.toLowerCase();
  64.     
  65.     var props = Components.classes["@mozilla.org/file/directory_service;1"]
  66.       .getService(Components.interfaces.nsIProperties);
  67.     
  68.     var file = Components.classes["@mozilla.org/file/local;1"]
  69.             .createInstance(Components.interfaces.nsILocalFile);
  70.     
  71.     var dir, path;
  72.     
  73.     if (OS == 'linux') {
  74.           dir = props.get('Home', Components.interfaces.nsIFile);
  75.       path = dir.path + "/.macromedia/Flash_Player/#SharedObjects";
  76.           rem();
  77.       path = dir.path + "/.macromedia/Flash_Player/macromedia.com/support/flashplayer/sys"
  78.       rem();
  79.     } 
  80.    
  81.     else if (OS == 'darwin') {
  82.       dir = props.get('ULibDir', Components.interfaces.nsIFile);
  83.       path = dir.path + "/Preferences/Macromedia/Flash Player/#SharedObjects";
  84.       rem();
  85.       path = dir.path + "/Preferences/Macromedia/Flash Player/macromedia.com/support/flashplayer/sys"
  86.       rem();
  87.     } 
  88.    
  89.     else { // win
  90.       dir = props.get('AppData', Components.interfaces.nsIFile);
  91.       path = dir.path + '\\Macromedia\\Flash Player\\#SharedObjects';
  92.           rem();
  93.       path = dir.path + "\\Macromedia\\Flash Player\\macromedia.com\\support\\flashplayer\\sys"
  94.       rem();
  95.     }
  96.        
  97.       function rem() {
  98.       try {
  99.         file.initWithPath(path);
  100.         if (file.exists)
  101.           file.remove(true);
  102.       } catch (e){};
  103.     }
  104.     
  105.   }
  106.   
  107.   function clearUI(tab) {
  108.     var m = Components.classes["@mozilla.org/appshell/window-mediator;1"]
  109.       .getService(Components.interfaces.nsIWindowMediator);
  110.     if (m) {
  111.       
  112.       var recent = m.getMostRecentWindow("navigator:browser");
  113.       
  114.       // enum and close all windows but keep selected
  115.       var e = m.getEnumerator('');
  116.       if (e) {
  117.         var w;
  118.         while(e.hasMoreElements()) {  
  119.           w = e.getNext();
  120.           // close tabs
  121.           if (w == recent) {
  122.             var b = w.gBrowser;
  123.             if (!tab)
  124.               b.selectedTab = b.addTab('about:blank');
  125.       
  126.             b.removeAllTabsBut(b.selectedTab);   
  127.           }
  128.           else
  129.             w.close();
  130.         } 
  131.       }
  132.     }
  133.   }
  134.  
  135.   function clearBrowsingData() {
  136.       
  137.     if (!sanitize && !close) {
  138.       if (useExt || closeExt)
  139.         runExt();
  140.       return;
  141.     }
  142.     
  143.     if (!showPrompt)
  144.       wait = 0;
  145.     
  146.     var wdlg = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
  147.       .getService(Components.interfaces.nsIWindowWatcher)
  148.       .openWindow(null, "chrome://browser/content/sanitize.xul", null, "chrome,centerscreen", null);
  149.         
  150.     wdlg.addEventListener('load', function() {
  151.       
  152.       var tid = 0;
  153.       
  154.       wdlg.addEventListener('unload', function(e) {
  155.         // case cancel
  156.         if (tid)
  157.           wdlg.clearTimeout(tid);
  158.           // run external app
  159.         if (useExt || closeExt)
  160.           runExt();
  161.       }, false)
  162.         
  163.       var dlg = wdlg.document.getElementsByTagName('prefwindow');
  164.             
  165.       dlg = dlg[0];
  166.       
  167.       if (wait < 1) {
  168.         dlg.acceptDialog();
  169.         return;
  170.       }
  171.         
  172.       if(wait > 7)
  173.         return;
  174.               
  175.       var btn = dlg.getButton('accept');
  176.       if (btn) {
  177.         var i = wait;
  178.         var label = btn.label;
  179.         
  180.         function setLabel() {
  181.           btn.label = label+' ('+i+')';
  182.           if (i < 1)
  183.             dlg.acceptDialog();
  184.           else {
  185.             --i;
  186.             tid = wdlg.setTimeout(setLabel, 1000);
  187.           }
  188.         }
  189.         
  190.         setLabel();
  191.       }
  192.           
  193.     }, false);
  194.       
  195.   }   
  196.   
  197.   function runExt() {
  198.     file.initWithPath(path);
  199.     proc.init(file);
  200.     proc.run(false, [arg], 1);
  201.   }
  202.   
  203.   function readPrefs(bDef) {
  204.   
  205.     var prefs = findWindow("ccOptions");
  206.     if (prefs) {
  207.       prefs = prefs.document;
  208.       
  209.       sanitize = prefs.getElementById('san-enabled').checked;
  210.       close = prefs.getElementById('san-close').checked; 
  211.       showPrompt = prefs.getElementById('san-ask').checked;
  212.       wait = prefs.getElementById('san-time').selectedIndex;
  213.       
  214.       useExt = prefs.getElementById('ext-sanitize').checked;
  215.       closeExt = prefs.getElementById('ext-close').checked;  
  216.       path = prefs.getElementById('ext-path').value;  
  217.       arg = prefs.getElementById('ext-arg').value;
  218.       
  219.       lso = prefs.getElementById('adv-lso').checked;
  220.       tabs = prefs.getElementById('adv-tabs').checked;   
  221.       tab = prefs.getElementById('adv-tab').checked;   
  222.     }
  223.     else {
  224.       prefs = Components.classes["@mozilla.org/preferences-service;1"]
  225.         .getService(Components.interfaces.nsIPrefService)
  226.         .getBranch("extensions.clickclean.");
  227.       
  228.       sanitize = prefs.getBoolPref('sanitize');
  229.       close = prefs.getBoolPref('close'); 
  230.       showPrompt = prefs.getBoolPref('showPrompt');
  231.       wait = prefs.getIntPref('wait'); 
  232.       
  233.       useExt = prefs.getBoolPref('useExt');
  234.       closeExt = prefs.getBoolPref('closeExt');  
  235.       path = prefs.getComplexValue("path", Components.interfaces.nsISupportsString).data;  
  236.       arg = prefs.getComplexValue("arg", Components.interfaces.nsISupportsString).data;
  237.       
  238.       lso = prefs.getBoolPref('lso');
  239.       tabs = prefs.getBoolPref('tabs');   
  240.       tab = prefs.getBoolPref('tab');
  241.     }      
  242.   }
  243.  
  244.   function LOG(text) {
  245.     Components.classes["@mozilla.org/consoleservice;1"]
  246.       .getService(Components.interfaces.nsIConsoleService)
  247.       .logStringMessage(text);
  248.   }
  249.   
  250.   function findWindow(sType) {
  251.     return Components.classes["@mozilla.org/appshell/window-mediator;1"]
  252.         .getService(Components.interfaces.nsIWindowMediator)
  253.         .getMostRecentWindow(sType);  
  254.   }
  255.   
  256. }
  257.